package entity

import (
	"server/world/scene"
	"sync/atomic"
)

type Entity struct {
	id     int64
	x, y   float64 // 位置
	layer  *scene.Layer
	status int32
}

// GetX 获取X坐标，实现Entity接口
func (p *Entity) GetX() float64 {
	return p.x
}

// GetY 获取Y坐标，实现Entity接口
func (p *Entity) GetY() float64 {
	return p.y
}

// GetID 获取玩家ID，实现Entity接口
func (p *Entity) GetID() int64 {
	return p.id
}
func (p *Entity) Update() {

}

// SetLayer 设置层
func (p *Entity) SetLayer(layer *scene.Layer) {
	p.layer = layer
}

// GetLayer 获取所在层，可能为空
func (p *Entity) GetLayer() *scene.Layer {
	return p.layer
}

func (p *Entity) GetStatus() scene.EntityStatus {
	return scene.EntityStatus(p.status)
}
func (p *Entity) SetStatus(from, to scene.EntityStatus) bool {
	return atomic.CompareAndSwapInt32(&p.status, int32(from), int32(to))
}
